package com.tfjybj.itoo.teach.provider.service;

import com.dmsdbj.itoo.tool.base.service.BaseServicePlus;
import com.dmsdbj.itoo.tool.business.ItooResult;
import com.github.pagehelper.PageInfo;
import com.tfjybj.itoo.teach.entity.InstitutionEntity;
import com.tfjybj.itoo.teach.model.InstitutionModel;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;


/**
 * InstitutionService接口
 * institution表
 *
 * @author 田成荣
 * @version 2.0.0
 * @since 2.0.0 2018-11-08 19:34:10
 */
public interface InstitutionService extends BaseServicePlus<InstitutionEntity> {
	
	//region 模板生成：模糊查询
	/**
     * 根据机构名称模糊查询institution
     *
     * @param name  机构名称
     * @param pageNo   页码
     * @param pageSize 页数
     * @return 模糊查询的institution
     * @author 田成荣
     * @since 2.0.0 2018-11-08 19:34:10
     */
    PageInfo<InstitutionEntity> queryByLikeName(String name, Integer pageNo, Integer pageSize);
	//endregion

    /* **********************************以下为非模板生成的内容********************************* */
    /**
     * 查询所有党政部门
     * @return Institution
     * @author 杨燕梅
     * @since 2.0.0 2018-11-23 17:14:39
     */
    List<InstitutionModel>queryAllInstitution();

    /**
     * 查询所有党政部门（带分页）
     * @param pageNo
     * @param pageSize
     * @return
     * @author 杨燕梅
     * @since 2.0.0 2018-12-19 16:12:30
     */
    PageInfo<InstitutionModel> queryAllInstitutionPageInfo(Integer pageNo, Integer pageSize);

    /**
     * 根据教学和党政部门名称查ID（教学和党政部门）-张家豪
     * @param id
     * @return Institution
     * @author 杨燕梅
     * @since 2.0.0 2018-11-25 16:00:30
     */
    List<InstitutionModel>queryAcademyAndInstitutionIdByName(String id);

    /**
     * 根据党政部门名称模糊查询academy(带分页)
     * @param searchContent  党政部门名称
     * @param pageNo   页码
     * @param pageSize 页数
     * @return 模糊查询的academy
     * @author 杨燕梅
     * @since 2.0.0 2018-12-7 15:10:46
     */
    PageInfo<InstitutionModel> queryInstitutionByLikeName(String searchContent, Integer pageNo, Integer pageSize);

    /**
     * 根据党政部门ID查询党政部门详情
     *
     * @param idList 党政部门ID
     * @return 党政部门实体集合
     * @author 杨燕梅
     * @since 2.0.0 2018-12-12 17:46:18
     */
    List<InstitutionModel> queryInstitutionById(List<String> idList);

    /**
     * 根据ID导出党政部门信息
     *
     * @param response 响应
     * @param idList   党政部门ID
     * @return 导出结果信息
     * @author 杨燕梅
     * @since 2.0.0 2018-12-12 17:46:22
     */
    ItooResult exportByInstitutionId(HttpServletResponse response, List<String> idList);

    /**
     * 根据条件导出党政部门
     *
     * @param response     响应
     * @param searchContent    党政部门名称
     * @return 导出结果信息
     * @author 杨燕梅
     * @since 2.0.0 2018-12-23 15:57:02
     */
    ItooResult exportByStrLike(HttpServletResponse response, String searchContent);
    /**
     * 下载党政部门模板，批量导入使用
     *
     * @param response 响应
     * @return 下载模板是否成功
     * @author 杨燕梅
     * @since 2.0.0 2018-11-29 16:34:12
     */
    boolean downLoadTemplate(HttpServletResponse response);

    /**
     * 批量导入党政部门
     * @param multipartFile
     * @param request
     * @param response
     * @return
     *  @author 杨燕梅
     *  @since 2.0.0 2018-11-30 12:02:04
     */
    ItooResult importTemplate(MultipartFile multipartFile, HttpServletRequest request, HttpServletResponse response);
    /**
     * 根据errorListId导出未成功导入的信息
     *
     * @param response    响应
     * @param errorListId 为成功导入的分组id
     * @return 导出结果
     * @author 杨燕梅
     * @since 1.0.0 2018-12-1 23:26:22
     */
    boolean exportErrorList(String errorListId, HttpServletResponse response);

    /**
     * 根据党政部门代码和党政部门名称查询党政部门是否已存在
     *
     * @param code   党政部门代码
     * @param name   党政部门名称
     * @return 党政部门信息
     * @author 杨燕梅
     * @since 2.0.0 2018-12-20 09:05:59
     */
    List<InstitutionEntity> queryByCodeAndNameExist(String code, String name);

    /**
     * 将数据保存到权限中去
     *
     * @param institutionEntity
     * @author 李建帅
     * @since 2.0.0 2018-12-9 19:18:10
     */
    void saveToAuth(InstitutionEntity institutionEntity);
}
